package org.micro.rbac.util;

import cn.hutool.core.bean.BeanUtil;
import com.github.pagehelper.Page;
import com.google.common.collect.Lists;
import org.micro.rbac.core.model.PageBean;

import java.util.List;

/**
 * 分页转换器
 *
 * @author hongsir
 * @since 2023-03-31 19:58
 **/
public class PageUtil {

    public static <T> PageBean<T> of(com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> page) {
        return new PageBean<>((int) page.getCurrent(), (int) page.getSize(), page.getTotal(), page.getRecords());
    }

    public static <T> PageBean<T> of(Page<T> page) {
        return new PageBean<>(page.getPageNum(), page.getPageSize(), page.getTotal(), page.getResult());
    }

    public static <T, O> PageBean<T> of(Page<O> page, Class<T> clazz) {
        PageBean<T> result = new PageBean<>();
        result.setPageNum(page.getPageNum());
        result.setPageSize(page.getPageSize());
        result.setTotal(page.getTotal());

        if (page.getTotal() > 0) {
            List<T> list = Lists.newArrayList();
            page.getResult().forEach(e -> {
                list.add(BeanUtil.copyProperties(e, clazz));
            });
            result.setList(list);
        }
        return result;
    }


}
